package others;

import java.util.Arrays;

public class TestOffer6 {

    /**
     * 给定一个已按照 升序排列 的整数数组numbers ，请你从数组中找出两个数满足相加之和等于目标数 target 。
     *
     * 函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 0开始计数 ，所以答案数组应当满足 0<= answer[0] < answer[1] <numbers.length。
     *
     * 假设数组中存在且只存在一对符合条件的数字，同时一个数字不能使用两次。
     * 输入：numbers = [1,2,4,6,10], target = 8
     * 输出：[1,3]
     * 解释：2 与 6 之和等于目标数 8 。因此 index1 = 1, index2 = 3 。
     */

    public static int[] twoSum(int[] numbers, int target) {

        Arrays.sort(numbers);
        int len = numbers.length;
        int left = 0; int right = len -1 ;

        while ( right> left){

            if(numbers[left] + numbers[right] == target){
                return new int[] {left, right};
            }else if(numbers[left] + numbers[right] > target) {
                right--;
            }else if(numbers[left] + numbers[right] < target) {
                left++;
            }
        }
        return new int[]{0, 0};
    }

    public static void main(String[] args) {
        int[] targetArr = {1,2,4,6,10};
        System.out.println(Arrays.toString(twoSum(targetArr, 8)));

    }
}
